
import { getUserInfo, login } from '@/api/user'
import { setToken, getToken, removeToken } from '@/utils/auth'

const state = {
  Token: getToken(),
  // 用户信息
  userInfo: {}
}
const mutations = {
  SetToken(state, token) {
    state.Token = token
    setToken(token)
    // 持久化存本地
  },
  // 为了好维护 在封装一个专用于清除token的mutation
  removeToken(state) {
    state.Token = null
    // 删除token
    removeToken()
  },
  SetUserInfo(state, userInfo) {
    state.userInfo = userInfo
  },
  removeUserInfo(state) {
    state.userInfo = {}// 用户信息擦除
  }
}

const actions = {
  async logout({ commit }) {
    // 1.清除token
    commit('removeToken')
    // 2.清除用户信息
    commit('removeUserInfo')
  },
  async login({ commit }, obj) {
    // axios配置基础地址 拦截器
    // 请求维护在api中
    // 请求发布出去=>跨域=>通过代理解决
    const token = await login(obj)
    commit('SetToken', token)
  },
  // 请求后端接口获取用户信息 通过mutation存下来
  async getUserInfo({ commit }) {
    const res = await getUserInfo()
    console.log(res)
    commit('SetUserInfo', res)
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
